﻿using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ADO数据库编程
{
    class SqlCommandDemo
    {
        public void TestSelect()
        {
            using (SqlConnection connection = new SqlConnection(SqlHelper.getConnStr("connSqlServer2")))
            {
                connection.Open();
                // 这里执行数据库操作，例如：
                string sql = " SELECT id,name,age,sex,addr FROM Person order by id asc ";
                SqlCommand command = new SqlCommand(sql, connection);
                SqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    // 处理数据  
                    long id = reader.GetInt64(0);
                    string name = reader.GetString(1);
                    int age = reader.GetInt32(2);
                    string sex = reader.GetString(3);
                    string addr = reader.GetString(4);
                    Console.WriteLine($"id:{id},name:{name},age:{age},sex:{sex},addr:{addr}");
                }
                // 无需显式关闭连接，using 语句块结束时会自动关闭  
            }
            // 在这里，连接已经关闭，因为 using 语句块已经结束
        }


        public void TestAdd()
        {
            using (SqlConnection connection = new SqlConnection(SqlHelper.getConnStr("connSqlServer2")))
            {
                connection.Open();
                // 这里执行数据库操作，例如：
                //
                string sql = " INSERT INTO Person (name,age,sex,addr) values(@Value1,@Value2,@Value3,@Value4) ";
                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    command.Parameters.AddWithValue("@Value1", "李连杰");
                    command.Parameters.AddWithValue("@Value2", "65");
                    command.Parameters.AddWithValue("@Value3", "男");
                    command.Parameters.AddWithValue("@Value4", "香港");
                    try
                    {
                        command.ExecuteNonQuery();
                        Console.WriteLine("数据插入成功！");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("数据插入失败: " + ex.Message);
                    }
                }
                // 无需显式关闭连接，using 语句块结束时会自动关闭  
            }
            // 在这里，连接已经关闭，因为 using 语句块已经结束

        }

        public void TestUpdate()
        {
            using (SqlConnection connection = new SqlConnection(SqlHelper.getConnStr("connSqlServer2")))
            {
                connection.Open();
                // 这里执行数据库操作，例如：
                //
                string sql = " UPDATE Person set name = @Value1,age = @Value2,sex = @Value3,addr = @Value4 where id = @Value0 ";
                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    command.Parameters.AddWithValue("@Value0", 9);
                    command.Parameters.AddWithValue("@Value1", "李连杰");
                    command.Parameters.AddWithValue("@Value2", 66);
                    command.Parameters.AddWithValue("@Value3", "男");
                    command.Parameters.AddWithValue("@Value4", "河南");
                    try
                    {
                        command.ExecuteNonQuery();
                        Console.WriteLine("数据修改成功！");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("数据修改失败: " + ex.Message);
                    }
                }
                // 无需显式关闭连接，using 语句块结束时会自动关闭  
            }
            // 在这里，连接已经关闭，因为 using 语句块已经结束
        }

        public void TestDelete()
        {
            using (SqlConnection connection = new SqlConnection(SqlHelper.getConnStr("connSqlServer2")))
            {
                connection.Open();
                // 这里执行数据库操作，例如：
                //
                string sql = " Delete from Person where id = @Value0 ";
                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    command.Parameters.AddWithValue("@Value0", 9);
                    try
                    {
                        command.ExecuteNonQuery();
                        Console.WriteLine("数据删除成功！");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("数据删除失败: " + ex.Message);
                    }
                }
                // 无需显式关闭连接，using 语句块结束时会自动关闭  
            }
            // 在这里，连接已经关闭，因为 using 语句块已经结束
        }

    }
}
